f895b2
@@ -614,8 +614,10 @@
public int compareTo(BoundarySpec other)
       if (c != 0) {
         return c;
       }
+
       RangeBoundarySpec rb = (RangeBoundarySpec) other;
-      return amt - rb.amt;
+      // Valid range is "range/rows between 10 preceding and 2 preceding" for preceding case
+      return this.direction == Direction.PRECEDING ? rb.amt - amt : amt - rb.amt;
     }
 
   }
@@ -713,7 +715,8 @@
public int compareTo(BoundarySpec other)
         return c;
       }
       ValueBoundarySpec vb = (ValueBoundarySpec) other;
-      return amt - vb.amt;
+      // Valid range is "range/rows between 10 preceding and 2 preceding" for preceding case
+      return this.direction == Direction.PRECEDING ? vb.amt - amt : amt - vb.amt;
     }
 
   }
